"""
定义登录夹具
pytest的fixture的定义
1、def 定义一个普通
2、申明夹具： @pytest.fixtrue
3、做登录操作 目的 ： 得到token
  - jsonpath 提取token
4、设置夹具返回值： yield token
"""
import pytest
import requests
from jsonpath import jsonpath
from loguru import logger


@pytest.fixture()
def login_fixture():
    logger.info("--------------前置代码处理-------------")
    param = {"principal": "lemon_py", "credentials": "12345678", "appType": 3, "loginType": 0}
    url = 'http://mall.lemonban.com:8107/login'
    res = requests.request("post", url, json=param)
    access_token = jsonpath(res.json(), '$..access_token')[0]
    token_type = jsonpath(res.json(), '$..token_type')[0]  # bearer
    token = token_type + access_token  # 拼接登录之后返回的token 给后面的接口鉴权
    logger.info(f"夹具返回的token是{token}")
    yield token  # 夹具的返回值  token 调用夹具得到这个返回值